package dominio.dao;

import hbt.HibernateUtil;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import dominio.beans.*;


public class HibernateDAO {
	private static HibernateDAO instancia = null;
	private static SessionFactory sf = null;
	private Session session = null;
	
	public static HibernateDAO getInstancia(){
		if(instancia == null){
			sf = HibernateUtil.getSessionFactory();
			instancia = new HibernateDAO();
		} 
		return instancia;
	}
	
	private Session getSession(){
		if(session == null)
			session = sf.openSession();
		return session;
	}
	
	public void closeSession(){
		if (session != null) session.close();
	}
	
	public void grabarClientes(List<Cliente> lista){
		Session session = getSession();
		session.beginTransaction();
		for(Cliente c : lista){
			session.persist(c);
		}
		session.flush();
		session.getTransaction().commit();
	}
	
	public void grabarProveedores(List<Proveedor> lista){
		Session session = getSession();
		session.beginTransaction();
		for(Proveedor p : lista){
			session.persist(p);
		}
		session.flush();
		session.getTransaction().commit();
	}
	public void grabarProductos(List<Producto> lista){
		Session session = getSession();
		session.beginTransaction();
		for(Producto p : lista){
			session.persist(p);
		}
		session.flush();
		session.getTransaction().commit();
	}
	

	public void grabarOrdenesDePedido(List<OrdenDePedido> lista){
		Session session = getSession();
		session.beginTransaction();
		for(OrdenDePedido o: lista){
			session.persist(o);
		}
		session.flush();
		session.getTransaction().commit();
	}
	

	public void grabarStockDeRodamientos(List<StockRodamiento> lista){
		Session session = getSession();
		session.beginTransaction();
		for(StockRodamiento s : lista){
			session.persist(s);
		}
		session.flush();
		session.getTransaction().commit();
	}
	
	@SuppressWarnings("unchecked")
	public List<Cliente> listaDeCliente (){
		
		Session session = getSession();
		List<Cliente> listaClientes= session.createQuery("from Clientes").list();
		session.close();
		
		return listaClientes;
	}
		

/*		@SuppressWarnings("unchecked")
		public List<Cliente> listaDeProveedores(){
			
			Session session = getSession();
			List<Cliente> listaProveedores= session.createQuery("from Proveedores").list();
			session.close();
			
			return listaProveedores;		
	}
	*/
}
